package com.xianbeiying.app.ckgl.data;

import com.xianbeiying.app.ckgl.bean.GzQdDataBean;
import com.xianbeiying.app.ckgl.bean.HistoryDataBean;
import com.xianbeiying.app.ckgl.bean.SDDataBean;
import com.xianbeiying.app.ckgl.bean.TrSdDataBean;
import com.xianbeiying.app.ckgl.bean.TrWdDataBean;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 历史数据的处理
 */
public class HistoryDataUtil {
    //数据Model转换
    public static HistoryDataBean getData1(SDDataBean sdDataBean) {
        HistoryDataBean historyDataBean = new HistoryDataBean();
        HistoryDataBean.VBean vBean = new HistoryDataBean.VBean();
        List<HistoryDataBean.VBean.AIRTEMPDATABean> AIR_TEMP_DATA = new ArrayList<>();
        int size = sdDataBean.getV().getAIR_HUMIDITY_DATA().size();
        for (int i = 0; i < size; i++) {
            HistoryDataBean.VBean.AIRTEMPDATABean airtempdataBean = new HistoryDataBean.VBean.AIRTEMPDATABean();
            airtempdataBean.setDATA(sdDataBean.getV().getAIR_HUMIDITY_DATA().get(i).getDATA());
            airtempdataBean.setMAXDATA(sdDataBean.getV().getAIR_HUMIDITY_DATA().get(i).getMAXDATA());
            airtempdataBean.setMINDATA(sdDataBean.getV().getAIR_HUMIDITY_DATA().get(i).getMINDATA());
            airtempdataBean.setMONTH(sdDataBean.getV().getAIR_HUMIDITY_DATA().get(i).getMONTH());
            airtempdataBean.setTIME(sdDataBean.getV().getAIR_HUMIDITY_DATA().get(i).getTIME());
            AIR_TEMP_DATA.add(airtempdataBean);
        }
        vBean.setAIR_TEMP_DATA(AIR_TEMP_DATA);
        historyDataBean.setV(vBean);
        return historyDataBean;
    }

    public static HistoryDataBean getData2(TrWdDataBean sdDataBean) {
        HistoryDataBean historyDataBean = new HistoryDataBean();
        HistoryDataBean.VBean vBean = new HistoryDataBean.VBean();
        List<HistoryDataBean.VBean.AIRTEMPDATABean> AIR_TEMP_DATA = new ArrayList<>();
        int size = sdDataBean.getV().getSOIL_TEMP_DATA().size();
        for (int i = 0; i < size; i++) {
            HistoryDataBean.VBean.AIRTEMPDATABean airtempdataBean = new HistoryDataBean.VBean.AIRTEMPDATABean();
            airtempdataBean.setDATA(sdDataBean.getV().getSOIL_TEMP_DATA().get(i).getDATA());
            airtempdataBean.setMAXDATA(sdDataBean.getV().getSOIL_TEMP_DATA().get(i).getMAXDATA());
            airtempdataBean.setMINDATA(sdDataBean.getV().getSOIL_TEMP_DATA().get(i).getMINDATA());
            airtempdataBean.setMONTH(sdDataBean.getV().getSOIL_TEMP_DATA().get(i).getMONTH());
            airtempdataBean.setTIME(sdDataBean.getV().getSOIL_TEMP_DATA().get(i).getTIME());
            AIR_TEMP_DATA.add(airtempdataBean);
        }
        vBean.setAIR_TEMP_DATA(AIR_TEMP_DATA);
        historyDataBean.setV(vBean);
        return historyDataBean;
    }

    public static HistoryDataBean getData3(TrSdDataBean sdDataBean) {
        HistoryDataBean historyDataBean = new HistoryDataBean();
        HistoryDataBean.VBean vBean = new HistoryDataBean.VBean();
        List<HistoryDataBean.VBean.AIRTEMPDATABean> AIR_TEMP_DATA = new ArrayList<>();
        int size = sdDataBean.getV().getSOIL_HUMIDITY_DATA().size();
        for (int i = 0; i < size; i++) {
            HistoryDataBean.VBean.AIRTEMPDATABean airtempdataBean = new HistoryDataBean.VBean.AIRTEMPDATABean();
            airtempdataBean.setDATA(sdDataBean.getV().getSOIL_HUMIDITY_DATA().get(i).getDATA());
            airtempdataBean.setMAXDATA(sdDataBean.getV().getSOIL_HUMIDITY_DATA().get(i).getMAXDATA());
            airtempdataBean.setMINDATA(sdDataBean.getV().getSOIL_HUMIDITY_DATA().get(i).getMINDATA());
            airtempdataBean.setMONTH(sdDataBean.getV().getSOIL_HUMIDITY_DATA().get(i).getMONTH());
            airtempdataBean.setTIME(sdDataBean.getV().getSOIL_HUMIDITY_DATA().get(i).getTIME());
            AIR_TEMP_DATA.add(airtempdataBean);
        }
        vBean.setAIR_TEMP_DATA(AIR_TEMP_DATA);
        historyDataBean.setV(vBean);
        return historyDataBean;
    }

    public static HistoryDataBean getData4(GzQdDataBean sdDataBean) {
        HistoryDataBean historyDataBean = new HistoryDataBean();
        HistoryDataBean.VBean vBean = new HistoryDataBean.VBean();
        List<HistoryDataBean.VBean.AIRTEMPDATABean> AIR_TEMP_DATA = new ArrayList<>();
        int size = sdDataBean.getV().getBEAM_DATA().size();
        for (int i = 0; i < size; i++) {
            HistoryDataBean.VBean.AIRTEMPDATABean airtempdataBean = new HistoryDataBean.VBean.AIRTEMPDATABean();
            airtempdataBean.setDATA(sdDataBean.getV().getBEAM_DATA().get(i).getDATA());
            airtempdataBean.setMAXDATA(sdDataBean.getV().getBEAM_DATA().get(i).getMAXDATA());
            airtempdataBean.setMINDATA(sdDataBean.getV().getBEAM_DATA().get(i).getMINDATA());
            airtempdataBean.setMONTH(sdDataBean.getV().getBEAM_DATA().get(i).getMONTH());
            airtempdataBean.setTIME(sdDataBean.getV().getBEAM_DATA().get(i).getTIME());
            AIR_TEMP_DATA.add(airtempdataBean);
        }
        vBean.setAIR_TEMP_DATA(AIR_TEMP_DATA);
        historyDataBean.setV(vBean);
        return historyDataBean;
    }

    //一天小时数据的处理 一条线
    //进行折线数据设置
    //空气温度
    public static ArrayList<Integer> getOneKqsdModel(ArrayList<String> XLabel, HistoryDataBean historyDataBean) {
        ArrayList<Integer> data = new ArrayList<>(); //X轴上的标签数据列表
        data.clear();
        int size = XLabel.size();
        int historySize = historyDataBean.getV().getAIR_TEMP_DATA().size();
        for (int i = 0; i < size; i++) {
            data.add(0);
            for (int j = 0; j < historySize; j++) {
                if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                    data.set(i, (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getDATA());
                }
            }
        }
        return data;
    }
    //空气湿度

    //土壤温度

    //土壤湿度

    //光照强度

    //多天的数据处理 当为2月的时候进行28，29天判断处理,当为其他的时候进行30，31天判断处理 三条线
    //进行x轴设置 安星期来处理

    //安天数来进行处理
    //空气温度
    //多天处理
    public static ArrayList<String> getQXLabel(int number, int jx) {
        ArrayList<String> XLabel = new ArrayList<>();
        ArrayList<String> dateModel = new ArrayList<>(); //日期列表
        dateModel.clear();
        XLabel.clear();
        for (int i = 0; i < number; i++) {
            dateModel.add(com.xianbeiying.app.ckgl.util.DataUtil.getLastTime(-i));
        }
        int size = dateModel.size();
        for (int i = 0; i < size; i++) {
            if (i % jx == 0) {
                XLabel.add(dateModel.get(size - 1 - i).split("-")[2]);
            }
        }
        return XLabel;
    }

    //查询多天处理
    public static ArrayList<String> getCXXLabel(String startTime, int number) {
        int jx = 1;
        if (0 < number && number < 16) {
            jx = 1;
        } else if (16 <= number && number <= 26) {
            jx = 2;
        } else {
            jx = 2;
        }
        ArrayList<String> XLabel = new ArrayList<>();
        ArrayList<String> dateModel = new ArrayList<>(); //日期列表
        dateModel.clear();
        XLabel.clear();
        for (int i = 0; i < number; i++) {
            dateModel.add(com.xianbeiying.app.ckgl.util.DataUtil.getSpecifiedDayAfter(startTime, i));
        }
        int size = dateModel.size();
        for (int i = 0; i < size; i++) {
            if (i % jx == 0) {
                XLabel.add(dateModel.get(i).split("-")[2]);
            }
        }
        return XLabel;
    }

    public static ArrayList<Integer> getQMaxKqsdModel(ArrayList<String> XLabel, int startMonth, int endMonth, HistoryDataBean historyDataBean) {
        ArrayList<Integer> data = new ArrayList<>(); //X轴上的标签数据列表
        data.clear();
        int size = XLabel.size();
        int historySize = historyDataBean.getV().getAIR_TEMP_DATA().size();
        for (int i = 0; i < size; i++) {
            data.add(0);
            for (int j = 0; j < historySize; j++) {
                if (startMonth == historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMONTH()) {
                    if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                        data.set(i, (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMAXDATA());
                    }
                }
                if (endMonth == historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMONTH()) {
                    if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                        data.set(i, (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMAXDATA());
                    }
                }
            }
        }
        return data;
    }

    public static ArrayList<Integer> getQMinKqsdModel(ArrayList<String> XLabel, int startMonth, int endMonth, HistoryDataBean historyDataBean) {
        ArrayList<Integer> data = new ArrayList<>(); //X轴上的标签数据列表
        data.clear();
        int size = XLabel.size();
        int historySize = historyDataBean.getV().getAIR_TEMP_DATA().size();
        for (int i = 0; i < size; i++) {
            data.add(0);
            for (int j = 0; j < historySize; j++) {
                if (startMonth == historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMONTH()) {
                    if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                        data.set(i, (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMINDATA());
                    }
                }
                if (endMonth == historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMONTH()) {
                    if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                        data.set(i, (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMINDATA());
                    }
                }
            }
        }
        return data;
    }

    /**
     * 平均值
     */
    public static ArrayList<Integer> getQAvgKqsdModel(ArrayList<String> XLabel, int startMonth, int endMonth, HistoryDataBean historyDataBean) {
        ArrayList<Integer> data = new ArrayList<>(); //X轴上的标签数据列表
        data.clear();
        int size = XLabel.size();
        int historySize = historyDataBean.getV().getAIR_TEMP_DATA().size();
        for (int i = 0; i < size; i++) {
            data.add(0);
            for (int j = 0; j < historySize; j++) {
                if (startMonth != endMonth) {
                    if (startMonth == historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMONTH()) {
                        if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                            int max = (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMAXDATA();
                            int min = (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMINDATA();
                            data.set(i, (max + min) / 2);
                        }
                    }
                    if (endMonth == historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMONTH()) {
                        if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                            int max = (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMAXDATA();
                            int min = (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMINDATA();
                            data.set(i, (max + min) / 2);
                        }
                    }
                } else {
                    if (historyDataBean.getV().getAIR_TEMP_DATA().get(j).getTIME() == Integer.valueOf(XLabel.get(i))) {
                        int max = (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMAXDATA();
                        int min = (int) historyDataBean.getV().getAIR_TEMP_DATA().get(j).getMINDATA();
                        data.set(i, (max + min) / 2);
                    }
                }
            }
        }
        return data;
    }
    //空气湿度

    //土壤温度

    //土壤湿度

    //光照强度
    //设置y轴
    public static ArrayList<String> getCYXLabel(int id, GzQdDataBean gzQdDataBean) {
        ArrayList<String> YLabel = new ArrayList<>();
        List<Integer> integers = new ArrayList<>();
//        setXY(0, 13, 1000);
        YLabel.clear();
        integers.clear();
        int size = gzQdDataBean.getV().getBEAM_DATA().size();
        for (int i = 0; i < size; i++) {
            if (id == 1) {
                integers.add((int)gzQdDataBean.getV().getBEAM_DATA().get(i).getDATA());
            }
            if (id == 2) {
                integers.add((int)gzQdDataBean.getV().getBEAM_DATA().get(i).getMAXDATA());
            }
        }
        int max= Collections.max(integers);
        int jianjun;
        if(0<max&&max<=120){
            jianjun=10;
        }else if(120<max&&max<=12000){
            jianjun=1000;
        }else if(12000<max&&max<=120000){
            jianjun=10000;
        }else{
            jianjun=15000;
        }
        for (int i = 0; i <13; i++) {
            YLabel.add(i*jianjun+"");
        }
        return YLabel;
    }
}
